#ifndef GEOMETRICPRIMITIVES_H
#define GEOMETRICPRIMITIVES_H

#include <CGAL/Simple_cartesian.h>
#include <CGAL/Aff_transformation_3.h>

typedef CGAL::Simple_cartesian<double>  K;
typedef CGAL::Point_3<K>                Point;
typedef CGAL::Vector_3<K>               Vector;
typedef CGAL::Plane_3<K>                Plane;
typedef CGAL::Aff_transformation_3<K>   Transformation;

typedef struct {
    double x,y,z,val;
} XYZ;

typedef struct {
    XYZ p[3];
    XYZ normal;
    int type; //debugging only
} TRIANGLE;

typedef struct {
    XYZ p[8];
    double val[8];
} GRIDCELL;

const double I_INSIDE = -1.0 , I_OUTSIDE = 10000000000.0;
enum Axis{X_AXIS , Y_AXIS, Z_AXIS};

const double PI = 3.14159265;
#define ABS(x)   ((x) >= 0 ? (x) : -(x))

#endif // GEOMETRICPRIMITIVES_H
